package com.lagou.product.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.lagou.common.pojo.Products;
import com.lagou.common.pojo.ProductsDTO;
import com.lagou.product.mapper.ProductMapper;
import com.lagou.product.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author Ethan
 * @date 2021/03/02 15:30
 * @description 商品服务接口实现类
 */

@Service
public class ProductServiceImpl implements ProductService {

    @Autowired
    private ProductMapper productMapper;

    /**
     * 通过商品ID查询商品信息
     *
     * @param id 商品ID
     * @return 查询到的商品对象
     */
    @Override
    public Products queryById(Integer id) {
        return productMapper.selectById(id);
    }

    /**
     * 通过商品ID删除商品
     *
     * @param id 商品Id
     * @return 受影响的行数
     */
    @Override
    public int deleteById(Integer id) {
        return productMapper.deleteById(id);
    }

    /**
     * 通过商品ID更新商品
     *
     * @param id 商品ID
     * @return 受影响的行数
     */
    @Override
    public int updateById(Products product) {
        return productMapper.updateById(product);
    }

    /**
     * 分页条件查询商品
     *
     * @param productsDTO 传入的包含条件的商品对象
     * @return 查询到的符合条件的商品信息
     */
    @Override
    public Map<String, Object> queryByPage(ProductsDTO productsDTO) {
        PageHelper.startPage(productsDTO.getPageNumber(), productsDTO.getPAGESIZE());
        List<Products> productsList = productMapper.queryByPage(productsDTO);
        PageInfo<Products> pageInfo = new PageInfo<>(productsList);

        HashMap<String, Object> map = new HashMap<>(2);
        map.put("list", productsList);
        map.put("total", pageInfo.getTotal());
        return map;
    }
}
